import math
import numpy as np

class WaterSphere:
    """
    水球，折射介质
    
    Members
    -------
    centerPos : list
        水球中心坐标，固定在(0,0)
    n : float
        水的折射率
    radius : float
        水球的半径
    """

    def __init__(self, radius):
        """
        初始化水球
        """
        self.centerPos = [0,0]
        self.n = 1.33
        self.radius = radius

    def calNormalAngle(self, intersectionPos):
        """
        计算交点与球心之间的法线方向角（范围-90——90度）

        Parameters
        ----------
        intersectionPos : list
            光路与水球的交点坐标(x,y)

        Returns
        -------
        normalAngle : float
            交点与球心之间的法线方向角（角度制）
        """
        x = intersectionPos[0]
        y = intersectionPos[1]
        x0 = self.centerPos[0]
        y0 = self.centerPos[1]
        normalAngle = math.atan((x - x0) / (y - y0))
        normalAngle = normalAngle * 180 / np.pi
        return normalAngle
